Add Fedora as variant alongside Ubuntu defaults#305
Conversation
Add Fedora-based Docker images for base, base-app, firefox, and steam as an alternative to the existing Ubuntu images. Ubuntu remains the default; Fedora images are tagged with -fedora suffix (e.g. edge-fedora) plus standalone fedora and fedora-43 tags. - Add build-fedora/ directories with self-contained Fedora Dockerfiles and scripts for base, base-app, firefox, and steam - Add variant input to reusable workflow controlling build path, tag suffix, cache keys, and artifact names - Add parallel Fedora build chain in auto-build.yml - Fix is_fork detection in CI (replaces pull_request event checks) - Fix steamos-dbus-watchdog.sh duplicate -shutdown line - Clean up Debian-isms from Fedora Dockerfiles
Add build-fedora/ directories with Fedora Dockerfiles for: - base-emu (RPM Fusion retroarch + AppImage emulators) - pulseaudio (alsa-lib + pulseaudio via dnf) - retroarch (RPM Fusion) - kodi (dnf) - xfce (Fedora XFCE group + Firefox) - prismlauncher (COPR repo) - pegasus (AppImage approach) - es-de (AppImage, distro-agnostic) - heroic-games-launcher (RPM + Wine from RPM Fusion) - lutris (dnf + Wine + patched bwrap from RPM Fusion) Update auto-build.yml CI to add: - base-emu-fedora chain for emulator images - emus-fedora matrix (pegasus, es-de) - Full apps-fedora matrix with all images
- base-emu: replace removed xorg-x11-server-utils with xrandr - lutris: replace SDL2.i686 with sdl2-compat.i686, xorg-x11-server-utils with xrandr - heroic-games-launcher: replace SDL2.i686 with sdl2-compat.i686 - prismlauncher: remove java-17-openjdk and java-1.8.0-openjdk (unavailable on F43) - kodi: add RPM Fusion repos (kodi package lives there, not in base repos) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The merge job's digest download pattern digests-base-* was matching both digests-base-linux-amd64 (Ubuntu) and digests-base-fedora-linux-amd64 (Fedora), causing the Ubuntu base:sha-xxx tag to point to a manifest containing the Fedora digest. This made base-app (Ubuntu) fail with 'apt-get: command not found' since it inherited a Fedora image. Fix by prefixing variant artifacts: digests-fedora-base-linux-amd64, so digests-base-* only matches Ubuntu digests. Also move tag suffix from global flavor to per-tag suffix= to prevent standalone 'fedora' and 'fedora-43' tags from becoming 'fedora-fedora'.
- kodi: remove 'service dbus start' (not available on Fedora, handled at runtime by overlay script 99-startdbus.sh) - pegasus: remove fuseiso and compat-openssl11 (not in Fedora 43 repos)
- steam/lutris (both variants): change bwrap-builder stage from
ubuntu:25.04/fedora:43 to ${BASE_APP_IMAGE} to avoid Docker Hub
rate limits (429 Too Many Requests) from parallel pulls
- pegasus (fedora): use x11-static.zip instead of nonexistent AppImage
- Bump all actions to latest major versions supporting Node.js 24: checkout v4→v6, cache v4→v5, upload-artifact v4→v7, download-artifact v4→v8, metadata-action v5→v6, setup-qemu-action v3→v4, setup-buildx-action v3→v4, login-action v3→v4, build-push-action v6→v7 - Remove deprecated 'install: true' from setup-buildx-action - Add default BASE_APP_IMAGE to firefox/steam Fedora Dockerfiles to fix InvalidDefaultArgInFrom lint warning
|
Would it be possible to add protontricks into the steam image? Its usually a hassle if you have to use it to change the proton enviroment. And while it has become better there are still games that require it or in case you want to use mods. |
I might be interested in doing it, but not in this PR. This PR is already huge. |
|
I'm interested in trying this out. The current Ubuntu-based retroarch image randomly freezes on some games when using the Vulkan backend and I'm curious if a Fedora image would be more stable. Are these images ready to test, or is it still WIP? |
should be as easy as just changing the image tag in the config file with the fedora variants mentioned here https://github.com/games-on-whales/gow/pkgs/container/steam |
|
Its already merged into another branch so i guess it got just automatically build |
|
Using nested gamescope at first crashed the container but on second try it seems to work fine now an improvement over the ubuntu image since there nested gamescope is completly unusable |
| mkdir -p "$STEAMDIR/debian-installation" | ||
| touch "$STEAMDIR/debian-installation/.cef-enable-remote-debugging" |
There was a problem hiding this comment.
| mkdir -p "$STEAMDIR/debian-installation" | |
| touch "$STEAMDIR/debian-installation/.cef-enable-remote-debugging" | |
| touch "$STEAMDIR/.cef-enable-remote-debugging" | |
| ln -fs --no-target-directory "$STEAMDIR/compatibilitytools.d" "$STEAMDIR_LEGACY/compatibilitytools.d" | |
| ln -fs --no-target-directory "$STEAMDIR_LEGACY/steamapps" "$STEAMDIR/steamapps" |
With this change decky loader should work out of the box for people again.
With the symlink things like Decky's WineCellar Plugin should again work out of the box too
Last symlinks allows the lossless scaling plugin to detect the install of Lossless Scaling (has to be installed in the containers default Steam Library)
There was a problem hiding this comment.
The debian installation directory is redundant since its no longer used.
There was a problem hiding this comment.
I will probably add a seperate PR for the Ubuntu side too but this would fix it immidiatly for the fedora image.
There was a problem hiding this comment.
There is however still an issue with decky loader beeing unable to update last time i tried i haven't figured out a fix for that yet besides deleting the homebrew folder.
There was a problem hiding this comment.
--no-target-directory for the symlinks are needed otherwise ln treats the symlinks as actual paths to drop the file into if the symlink already exists.
| @@ -0,0 +1,2 @@ | |||
| #!/bin/bash | |||
| service dbus start | |||
There was a problem hiding this comment.
when trying to start the xfce container i get back
7/opt/gow/startdbus: line 2: service: command not found
- xfce: fix startdbus.sh failing with "service: command not found" on Fedora by invoking dbus-daemon directly - steam: drop redundant debian-installation path and add compatibilitytools.d/steamapps symlinks so Decky WineCellar and Lossless Scaling plugins work out of the box Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds three media-client apps following the existing per-app pattern, each with Ubuntu build/ and Fedora build-fedora/ variants: - plex: Plex HTPC .deb/.rpm pulled from plex.tv downloads API - emby: Emby Theater Electron tarball from GitHub releases - youtube: FreeTube .deb/.rpm from GitHub releases (ad-free YT client) All three wire into the apps and apps-fedora CI matrices in auto-build.yml. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- plex: install real Plex HTPC from the upstream tarball at artifacts.plex.tv, resolving the current version from the Flathub manifest (Plex only publishes HTPC for Linux via Flathub — no .deb/.rpm or AppImage exists) - emby: use the actual emby-theater .deb/.rpm assets from the emby-theater-electron GitHub release (regex now matches the real names) - youtube: fetch FreeTube from /releases?per_page=1 since every FreeTube release is marked prerelease (so /releases/latest 404s), and fix Fedora regex to match amd64.rpm (FreeTube uses amd64 even on x86_64 rpms) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
xfce now fails with |
Plex does not publish .deb/.rpm/AppImage builds of HTPC for Linux and the raw tarball at artifacts.plex.tv is blocked by Cloudflare bot-management, so flatpak is the only reliable install path. Launch with `flatpak run tv.plex.PlexHTPC` at runtime. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…tube apps: add Plex HTPC, Emby Theater, and FreeTube (YouTube ad-free)
Use public.ecr.aws/ubuntu/ubuntu and quay.io/fedora/fedora instead of docker.io to avoid Docker Hub pull rate limits, which have been failing PR builds with 429 errors. Both mirrors are operated by the respective vendors (Canonical / Red Hat) and are rate-limit-free.
53d4d1f to
e175ac1
Compare
The quay.io/fedora/fedora:43 base image ships with the ffmpeg-free subsystem preinstalled, which conflicts with the full ffmpeg package from rpmfusion-free that base-emu requires. Pass --allowerasing so dnf swaps the preinstalled libswresample-free for the rpmfusion version.
If flatpak is not present in the image for any reason, the unguarded flatpak remote-add call combined with set -e crashes XFCE startup on first launch. Skip the flathub setup and log when flatpak is missing instead of failing the container.
…|| true The Fedora xfce image was shipping with zero packages installed from this RUN: gnome-software-plugin-flatpak is a Debian/Ubuntu name and doesn't exist on Fedora (the flatpak plugin is built into gnome-software itself), so dnf5 aborted the whole transaction with "No match for argument". The trailing `&& dnf remove -y foot 2>/dev/null || true && dnf clean all` then masked the failure under shell precedence ((A && B) || true) && D, so BuildKit saw exit 0 and cached an empty layer. Every later build imported that broken layer from the registry cache, which is why users hit `dbus-launch: command not found` and `startxfce4: command not found` at runtime even though CI was green. Drop gnome-software-plugin-flatpak and brace-group the foot removal so `|| true` can only ever mask that one command. Editing the Dockerfile also invalidates the BuildKit cache, forcing a real rebuild.
/usr/games/gamescope is Ubuntu-specific; Fedora installs gamescope to /usr/bin/gamescope. Use command -v gamescope in both init-gamescope.sh and launch-comp.sh so the binary is found regardless of distro. Also guard the chown in init-gamescope.sh against gamescope being absent, preventing a hard container crash on startup. Fixes wolf:fedora dying at boot with: chown: cannot access '/usr/games/gamescope': No such file or directory
The community PPA (prism-launcher-for-debian) has been unreliable: the plucky package 404s and the noble package requires libqt6dbus6t64 which was renamed on Ubuntu 25.04. Switch to the official Qt6 portable tarball from GitHub releases instead — self-contained, no PPA needed.
test() with regex backslashes gets mangled inside the Docker heredoc; use the same contains()+endswith() pattern as all other github_download calls in this repo.
fix: resolve gamescope path dynamically for Fedora compatibility
There was a problem hiding this comment.
I really do not like the idea of this Enviromental Variables but on the other side i haven't seen this path actually beeing used at all by Steam.
But even if it did trying to overwrite the Variable in the config doesn't work probably cause its set after the Enviromental Variables from the config already got applied.
Also even if it worked it would mess up Games for People that do not have cloud saves since they would not get migrated over.
| export WINEPREFIX="$HOME/.local/share/WolfSteam/pfx" | ||
| export STEAM_COMPAT_DATA_PATH="$WINEPREFIX" |
There was a problem hiding this comment.
This doesn't actually seem to do anything and even if it did it cannot be overwriten by Enviroment Variables set in the config i think this should just be removed
| export WINEPREFIX="$HOME/.local/share/WolfSteam/pfx" | |
| export STEAM_COMPAT_DATA_PATH="$WINEPREFIX" |
Summary
Builds on #282 by keeping Ubuntu as the default and adding Fedora as a tagged alternative, rather than replacing Ubuntu entirely. Adds Fedora variants for all GOW images.
build-fedora/directories for every imagevariantinput to the reusable CI workflow, controlling build path, tag suffix, cache keys, and artifact namesauto-build.yml(runs alongside the unchanged Ubuntu chain)is_forkCI detection fixes from WIP: Move GOW images to Fedora #282steamos-dbus-watchdog.shduplicate-shutdownlineDEBIAN_FRONTEND,NEEDRESTART_SUSPEND) from Fedora DockerfilesImages with Fedora variants
Tagging
edgeedge-fedora,fedora,fedora-431.2.3,1,latest1.2.3-fedora,1-fedorabranch-namebranch-name-fedoraDirectory layout
Each image gets a
build-fedora/alongside its existingbuild/:CI structure
Test plan
ghcr.io/games-on-whales/steam:edge→ Ubuntughcr.io/games-on-whales/steam:edge-fedora→ Fedoraghcr.io/games-on-whales/steam:fedora→ Fedora (standalone tag)